package com.xbongbong.paas.service;

import com.xbongbong.paas.pojo.dto.CallBatchCallConsumeDTO;
import com.xbongbong.paas.pojo.dto.CallBatchCallRechargeDTO;
import com.xbongbong.paas.pojo.dto.CallGetNotEndCallDTO;
import com.xbongbong.paas.pojo.dto.CallTaskAgainDTO;
import com.xbongbong.paas.pojo.dto.CallTaskListDTO;
import com.xbongbong.paas.pojo.dto.CallTaskSaveDTO;
import com.xbongbong.paas.pojo.vo.CallBatchCallConsumeVO;
import com.xbongbong.paas.pojo.vo.CallBatchCallRechargeVO;
import com.xbongbong.paas.pojo.vo.CallGetNotEndCallVO;
import com.xbongbong.paas.pojo.vo.CallTaskAgainVO;
import com.xbongbong.paas.pojo.vo.CallTaskListVO;
import com.xbongbong.paas.pojo.vo.CallTaskSaveVO;
import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.paas.toolbox.wrap.XbbResponse;

/**
 * @author youli.chen
 * @version v1.0
 * @description: 呼叫中心批量外呼计划业务层
 * @date 2019/2/22 19:23
 * @since v1.0
 */
public interface XbbCallTaskService {

    /**
     * 保存批量外呼计划
     *
     * @param callTaskSaveDTO 保存批量外呼计划入参
     * @return CallTaskSaveVO 保存批量外呼计划回参
     * @throws XbbException 销帮帮设定的异常
     * @author youli.chen
     * @version v1.0
     * @since v1.0
     */
    XbbResponse<CallTaskSaveVO> callTaskSave(CallTaskSaveDTO callTaskSaveDTO) throws XbbException;

    /**
     * 批量外呼计划列表
     *
     * @param callTaskListDTO 批量外呼计划列表入参
     * @return CallTaskListVO 批量外呼计划列表回参
     * @throws XbbException 销帮帮设定的异常
     * @author youli.chen
     * @version v1.0
     * @since v1.0
     */
    XbbResponse<CallTaskListVO> callTaskList(CallTaskListDTO callTaskListDTO) throws XbbException;

    /**
     * 查看上次是否有未完成的批量外呼进度
     *
     * @param callGetNotEndCallDTO 查看上次是否有未完成的批量外呼进度入参
     * @return CallGetNotEndCallVO 查看上次是否有未完成的批量外呼进度回参
     * @throws XbbException 销帮帮设定的异常
     * @author youli.chen
     * @version v1.0
     * @since v1.0
     */
    XbbResponse<CallGetNotEndCallVO> getNotEndCall(CallGetNotEndCallDTO callGetNotEndCallDTO) throws XbbException;

    /**
     * 批量外呼消费明细列表
     *
     * @param callBatchCallConsumeDTO 批量外呼消费明细列表入参
     * @return CallBatchCallConsumeVO 批量外呼消费明细列表回参
     * @throws XbbException 销帮帮设定的异常
     * @author youli.chen
     * @version v1.0
     * @since v1.0
     */
    XbbResponse<CallBatchCallConsumeVO> batchCallConsume(CallBatchCallConsumeDTO callBatchCallConsumeDTO) throws XbbException;

    /**
     * 批量外呼充值明细列表
     *
     * @param callBatchCallRechargeDTO 批量外呼充值明细列表入参
     * @return CallBatchCallRechargeVO 批量外呼充值明细列表回参
     * @throws XbbException 销帮帮设定的异常
     * @author youli.chen
     * @version v1.0
     * @since v1.0
     */
    XbbResponse<CallBatchCallRechargeVO> batchCallRecharge(CallBatchCallRechargeDTO callBatchCallRechargeDTO) throws XbbException;

    /**
     * 再次智能批量外呼计划
     *
     * @param callTaskAgainDTO 再次智能批量外呼计划入参
     * @return CallTaskAgainVO 再次智能批量外呼计划回参
     * @throws XbbException 销帮帮设定的异常
     * @author youli.chen
     * @version v1.0
     * @since v1.0
     */
    XbbResponse<CallTaskAgainVO> callTaskAgain(CallTaskAgainDTO callTaskAgainDTO) throws XbbException;
}
